package ca.etsmtl.log430.lab3.presentation;

import java.util.Collection;

import ca.etsmtl.log430.lab3.gestion.TeacherAssignmentException;
import ca.etsmtl.log430.lab3.gestion.ifaces.ICourse;
import ca.etsmtl.log430.lab3.gestion.ifaces.ITeacher;

/**
 * 
 * @author samuel
 *
 */
public interface IDisplay {

	/**
	 * Displays a teacher object elements as follows: Teacher's first name,
	 * Teacher's last name, Teacher's ID number, Teacher's type (e.g. PRF, CHR)
	 * 
	 * Note that the courses previously taught by to the teacher and the courses
	 * the teacher has been assigned for the current term are not listed.
	 * 
	 * @param teacher
	 */
	public abstract void displayTeacher(ITeacher teacher); // displayTeacher

	/**
	 * Displays a course object elements as follows: Course title, Course
	 * number, Course section (group), Days the course will be held on, Start
	 * time of the course, Stop time of the course, Instructor Name. Note that
	 * the students registered for the course are not listed by this method.
	 * 
	 * @param course
	 */
	public abstract void displayCourse(ICourse course); // DisplayCourse

	/**
	 * Lists the teachers that have been assigned for the course.
	 * 
	 * @param course
	 */
	public abstract void displayTeachersAssignedToCourse(ICourse course); // DisplayStudentsRegistered

	/**
	 * Lists the courses currently assigned to a teacher this term.
	 * 
	 * @param teacher
	 */
	public abstract void displayCoursesAssignedToTeacher(ITeacher teacher); // displayCoursesAssignedToTeacher

	/**
	 * Displays the students in the student list. Displays the same information
	 * that is listed in the displayStudent() method listed above.
	 * 
	 * @param list
	 */
	public abstract void displayTeacherList(Collection<? extends ITeacher> list); // DisplayStudentList

	/**
	 * Displays the courses in the course list. Displays the same information
	 * that is listed in the displayCourse() method listed above.
	 * 
	 * @param list
	 */
	public abstract void displayCourseList(Collection<? extends ICourse> list); // DisplayCourseList

	public abstract void displayException(TeacherAssignmentException e);

	public abstract void displaySigleList(Collection<String> courses);
	
}